home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 7
/
Aminet 7 - August 1995.iso
/
Aminet
/
misc
/
sci
/
ElectroCAD.lha
/
AUTOEXEC.AMOS
/
AUTOEXEC.amosSourceCode
next >
Encoding:
Amiga (detected)
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
AMOS Source Code
|
1995-06-14
|
45.1 KB
|
1,295 lines
Rem *****************************************
Rem ** **
Rem ** Electro Cad. Amiga Vertion 1.0 **
Rem ** **
Rem ** By Derek Pell. Started 24/07/90 **
Rem ** **
Rem ** Finished 02/01/90 **
Rem ** **
Rem *****************************************
'
'
Break Off : Auto View Off
Close Workbench : Erase 1
Dir$="ElectroCad:" : Change Mouse 3
Screen Open 7,640,26,16,Hires : Curs Off
Screen Open 6,810,180,4,Hires : Curs Off
For N=0 To 5
Screen Open N,640,256,4,Hires : Curs Off
Next
For N=0 To 6
Screen Display N,130,44,, : Screen N : Cls 0 : Next
Screen Display 7,130,16,, : Screen 7
Auto View On
Load Iff "ElecAcs/Icon_Bar.Iff"
Load "ElecAcs/Symbol_elec.abk"
Ink 2,0, : Screen 0
Menu$(1)=" Trashcan " : Menu Static(1)
Menu$(1,1)=" Clear Screen Ok! " : Menu Static(1,1)
Menu$(1,2)=" Erase a Schematic " : Menu Static(1,2)
Menu$(2)=" Load " : Menu Static(2)
Menu$(2,1)=" Load a Schematic " : Menu Static(2,1)
Menu$(3)=" Save " : Menu Static(3)
Menu$(3,1)=" Save Schematic " : Menu Static(3,1)
Menu$(4)=" Print " : Menu Static(4)
Menu$(4,1)=" Print Schematic " : Menu Static(4,1)
Menu$(5)=" Move " : Menu Static(5)
Menu$(5,1)=" Move Schematic " : Menu Static(5,1)
Menu$(6)=" Colour " : Menu Static(6)
Menu$(6,1)="(IN 0,0)(BA 98,8)" : Menu Static(6,1)
Menu$(6,2)="(IN 0,1)(BA 98,8)" : Menu Static(6,2)
Menu$(6,3)="(IN 0,2)(BA 98,8)" : Menu Static(6,3)
Menu$(6,4)="(IN 0,3)(BA 98,8)" : Menu Static(6,4)
Menu$(7)=" Shape " : Menu Static(7)
Menu$(7,1)=" Box " : Menu Static(7,1)
Menu$(7,2)=" Circle " : Menu Static(7,2)
Menu$(7,3)=" Ellipse " : Menu Static(7,3)
Menu$(8)=" Symbol " : Menu Static(8)
Menu$(8,1)=" Flip Horiz. " : Menu Static(8,1)
Menu$(8,2)=" Flip Vert. " : Menu Static(8,2)
Menu$(8,3)=" Vert/Horiz. " : Menu Static(8,3)
Menu$(8,4)=" Load Custom " : Menu Static(8,4)
Menu$(8,5)=" Grab a Brush " : Menu Static(8,5)
Menu$(8,6)=" Load a Brush " : Menu Static(8,6)
Menu$(8,7)=" Save a Brush " : Menu Static(8,7)
Menu$(9)=" Zoom " : Menu Static(9)
Menu$(9,1)=" Zoom In " : Menu Static(9,1)
Menu$(9,2)=" Restore " : Menu Static(9,2)
Menu$(10)=" Prefs " : Menu Static(10)
Menu$(10,1)=" Coordinates " : Menu Static(10,1)
Menu$(10,2)=" Targeting " : Menu Static(10,2)
Menu$(10,3)=" Set RGB " : Menu Static(10,3)
Menu$(10,4)=" Invert " : Menu Static(10,4)
Menu$(10,5)=" Exit System " : Menu Static(10,5)
On Menu Proc TRASH,LOD,SAV,PRIN,MOVE,CHANGE,SHAPE,SYMBOL,ZOM,PREFS
On Menu On
MFO=7 : MENOFF
MFO=$E : MENOFF
For N=6 To 0 Step -1
Screen N : Get Sprite Palette : Flash Off
Next
Dim SI(69) : SI$="111112222233333444445555566666777778888899999AAAAABBBBBCCCCCDDDDDEEEEE"
SC$="1111111111111111111111111111111111111111222222222233333444445555566666"
Dim WIN(29,10) : Dim P$(4) : Dim YN$(2) : C$=" Cancel "
Dim CLR(3) : Dim BCL(3) : Dim RGB(2) : Dim CUS$(15)
For N=0 To 3 : BCL(N)=Colour(N) : Next
For N=0 To 69 : SI(N)=Val("$"+Mid$(SI$,N+1,1)) : Next
For N=0 To 28 : WIN(N,2)=1 : WIN(N,3)=2 : WIN(N,4)=3 : WIN(N,5)=4 : Next
For N=0 To 14 : WIN(N,9)=5 : Next : For N=15 To 29 : WIN(N,9)=6 : Next
Reserve Zone 10
Screen To Back 0 : Wind Open 1,360,30,32,13,1 : Curs Off
'-------ff=1 ???-----------before f=0 next line
F=0 : MOVESCR : N=0 : Screen To Front 0 : Screen To Front 7 : Screen 0
O=1 : ICON_BAR : IK=1
Gosub LIM1
Global C1,C2,C3,CT$,CUS$(),SI$,SC$,CS$,MP,LCS,RBE,FX,ZQ
Global K,O,F,N,Q,J,Z,I#,C,M,CO,CF,TR,IK,SH,HS,HF,BF,LB,LW,MU,WC,CL,ZS,SX,XS,SY,YS,GX,GY,XG,YG,GF,TW,WT,FH,FF,SF,BFH,LIK
Global SCX,SCY,COM,SF,RUB,RST,MFO,LR,FULL,ZIRO,SI(),WIN(),CLR(),BCL(),RGB(),C$,D$,F$,X$,Y$,RGB$,LAB$,LAH$,YN$(),P$()
CS$="ElectroCad:ElecAcs/Symbol_elec.abk"
Change Mouse 1 : MP=1
MAIN_LOOP:
While Mouse Zone=0
XX=X : YY=Y : X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
If XX<>X or YY<>Y
If BF=1 and Mouse Zone<>1 : Wait Vbl : Bob 1,X,Y,I# : End If
If CO=1 : CO_ORS : End If
End If
'--------------------------- Lay a Conponant -----------------------
If BF=1 and Mouse Zone<>1 and Mouse Key=1 and RUB=0
If I#=96 or I#=97 : Ink 0,, : Draw X Bob(1)+3,Y Bob(1)+2 To X Bob(1)+5,Y Bob(1)+2 : Ink IK,, : End If
Put Bob 1 : Bell(50)
If IK=0
BASE=Sprite Base(I#)
SXG=Deek(BASE)*16 : SYG=Deek(BASE+2)
Screen Copy 0,X,Y,X+SXG,Y+SYG To 0,X,Y,96
Wait Vbl : Bob 1,X,Y,I# : End If
Repeat
XX=X : YY=Y : X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
If XX<>X or YY<>Y : Wait Vbl : Bob 1,X,Y,I# : End If
Until Mouse Key=0
End If
'-------------------------------------------------------------------
If RUB=1 and Z=0
Bob 1,X,Y,1
If Mouse Key=1
Bob Off 1 : Wait Vbl : Bar X-1,Y To X+23,Y+8
Bob 1,X,Y,1 : Wait Vbl
End If
End If
If(HF+BF)=0 Then Show On : HF=1
'-------------------------------------------------------------------
If Key State(89)=True Then J=2 : ICON_BAR
If Key State(79)=-1 and SCX>0 : F=1 : MOVESCR : Add SCX,-40 : Q=1 : End If
If Key State(78)=-1 and SCX<640 : F=1 : MOVESCR : Add SCX,40 : Q=1 : End If
If Key State(76)=-1 and SCY>0 : F=1 : MOVESCR : Add SCY,-16 : Q=1 : End If
If Key State(77)=-1 and SCY<256 : F=1 : MOVESCR : Add SCY,16 : Q=1 : End If
If Q=1 Then F=0 : MOVESCR : Q=0 : X=0
If Mouse Key=2 and O=1 Then Bob Off 1 : MENUCON : X=0
If Mouse Key=2 and J<>2 Then J=1 : Bob Off 1 : ICON_BAR : MENUCON : X=0
If Mouse Key<>2 and J=1 and O=1 Then ICON_BAR : J=0
If Mouse Zone=1 and O=0 or J=1 Then Bob Off 1
If Key State(68)=-1 and RUB=0
F=1 : MOVESCR : Z=0 : X=0
If WT=11 or WT=12 : Swap COM,WT : WT=0 : End If
If GF=1
Change Mouse 3 : Show On : HF=1 : Erase 1
Load CS$
Hide On : HF=0 : Change Mouse MP : CF=0 : GF=0 : Z=0 : FH=1
If Len(LAB$+LAH$)=0 : FH=0 : End If
If COM=11 or COM=12 or COM=3 and LCS>0 or COM=4 and LCS>0
Swap BF,ZIRO : ZIRO=0
Else
Swap BF,BFH : BFH=0 : End If
If LR>0 : LB=LR : End If
Swap RUB,RBE : I#=LB : Bob Off 1 : Wait Vbl
MFO=$A : MENON
MFO=$E : MENOFF
On COM-10 Proc PECIL,PECIL,TEXP,RUBER
BOCOL
If BF=0 : Change Mouse MP : Show On : HF=1 : End If
Else
I#=0 : Bob Off 1 : Show On : HF=1 : BF=0 : COM=0
End If : End If
If Key State(68)=-1 and RUB=1
RUB=0 : Ink IK,, : Wait 5
If I#=0
BF=0 : Bob Off 1 : Show On : HF=1
Else
Bob 1,,,I#
End If : End If
CHSMS
Wend : SLEICON : Goto MAIN_LOOP
Rem Turn Icon Bar On/Off :When off menu to be activated
Procedure CO_ORS
X$=Str$(X Screen(X Mouse)+SCX) : X$=Right$(X$,Len(X$)-1)
Y$=Str$(Y Screen(Y Mouse)+SCY) : Y$=Right$(Y$,Len(Y$)-1)
While Len(X$)<4 : X$="0"+X$ : Wend
While Len(Y$)<4 : Y$="0"+Y$ : Wend
Screen 7 : Text 595,10,X$ : Text 595,22,Y$ : Screen 0
End Proc
Procedure MOVESCR
If CO=1 Then CO_ORS
If BF=1 or RUB=1 Then Bob Off 1 : Wait Vbl
If F=1 Then Goto MOVIT : Rem Put Back
Rem Move Screen
SETEM: If SCX>0 or SCX<640 Then SX=SCX Else SX=0
If SCY>0 or SCY<256 Then SY=SCY Else SY=0
XS=640-SX : YS=256-SY
'-------------------------------------------------------------------
MOVIT: If F=1 and SX=640 Then SX=0
If F=1 and SY=256 Then SY=0
If SCX<640 and SCY<256
If F=1
Screen Copy 0,0,0,XS,YS To 1,SX,SY
Else
Screen Copy 1,SX,SY,640,256 To 0,0,0
End If
End If
'-------------------------------------------------------------------
If SCX>0 and SCY<256
If F=1
Screen Copy 0,XS,0,640,YS To 2,0,SY
Else
Screen Copy 2,0,SY,SX,256 To 0,XS,0
End If
End If
'-------------------------------------------------------------------
If SCX<640 and SCY>0
If F=1
Screen Copy 0,0,YS,XS,256 To 3,SX,0
Else
Screen Copy 3,SX,0,640,SY To 0,0,YS
End If
End If
'-------------------------------------------------------------------
If SCX>0 and SCY>0
If F=1
Screen Copy 0,XS,YS,640,256 To 4,0,0
Else
Screen Copy 4,0,0,SX,SY To 0,XS,YS
End If
End If
'-------------------------------------------------------------------
End Proc
Procedure STORSCR
If F=0
Wait Vbl
Screen Copy 5,0,0,640,256 To 0,0,0
Screen 5 : Cls 0 : Screen 0
Else
Screen Copy 0,0,0,640,256 To 5,0,0
End If
End Proc
Procedure STORWIN
If F=0
Screen Copy 5,360,30,617,134 To 0,360,30
Screen 5 : Cls 0 : Screen 0 : Show On : HF=1
Else
Screen Copy 0,360,30,617,134 To 5,360,30
End If
End Proc
Procedure SLEICON
Bob Off 1 : Show On : HF=1
If RUB=1 : RUB=0 : Ink IK,, : Wait 5
If I#=0 : BF=0 : End If : End If
SLEI: While Mouse Zone=1
If Key State(89)=True Then J=2 : ICON_BAR
If CO=1 : CO_ORS : End If
If X Mouse<413
N=Int((X Screen(X Mouse)-9)/8)
If N<0 : N=0 : End If
Else
Pop Proc : End If
If Mouse Key=1 or Mouse Key=2 Then Goto MAKC
Wend : If BF=1 Then Hide On : HF=0
Pop Proc
MAKC: COM=SI(N)
If RUB=1 Then RUB=0
Wait 15 : PWIND
Goto SLEI
End Proc
Procedure CHECKICON
If X Mouse<413
N=Int((X Screen(X Mouse)-9)/8)
If N<0 : N=0 : End If
Else
N=-1 : End If
End Proc
Procedure ICON_BAR
If O=0
Reset Zone
For P=44 To 16 Step -3
Wait Vbl : Screen Display 7,130,P,, : Next
O=2
Else
Set Zone 1,0,0 To 640,18
If Key State(89)=-1 : J=0 : End If
For P=16 To 44 Step 3
Wait Vbl : Screen Display 7,130,P,, : Next
O=0
If CO=0 : Screen 7 : Text 595,10," "
Text 595,22," " : Screen 0 : End If
End If
If O=2 Then O=1
Repeat : Until Key State(89)=0
End Proc
Procedure MENUCON
Limit Mouse 128,46 To 448,299
Change Mouse 1
If COM=13 or COM=5 and LCS>0 Then F=1 : STORWIN
Wait Vbl
Show On : HF=1 : Bell(50)
Menu On
'-----------------------------goto menu ops here-----------------
TIME=Timer
Do
If Mouse Key<>2 and(Timer-TIME)>1 Then Exit
Loop
'-----------------------------reset for next time----------------
On Menu On
MU=0 : Menu Off
If RUB=1 or BF=1 Then Hide On : HF=0
If LW=0 Then Change Mouse MP
If MP=2 Then Show On : HF=1
If COM=13 or COM=5 and LCS>0 Then F=0 : STORWIN
Gosub LIM1
End Proc
Procedure MENOFF
On MFO+1 Gosub MFO0,MFO1,MFO2,MFO3,MFO4,MFO5,MFO6,MFO7,MFO8,MFO9,MFOA,MFOB,MFOC,MFOD,MFOE,MFOF
End Proc
Procedure MENON
On MFO+1 Gosub MFN0,MFN1,MFN2,MFN3,MFN4,MFN5,MFN6,MFN7,MFN8,MFN9,MFNA,MFNB,MFNC,MFND,MFNE,MFNF
End Proc
MFO0: Menu Inactive(1,1) : Return : Rem CLS
MFO1: Menu Inactive(1,2) : Return : Rem ERASE
MFO2: Menu Inactive(2,1) : Return : Rem LOAD
MFO3: Menu Inactive(3,1) : Return : Rem SAVE
MFO4: Menu Inactive(4,1) : Return : Rem PRINT
MFO5: Menu Inactive(5,1) : Return : Rem MOVE
MFO6: Menu Inactive(9,1) : Return : Rem ZOOM
MFO7: Menu Inactive(9,2) : Return : Rem RESTORE
MFO8: Menu Inactive(8,1) : Return : Rem H FLIP
MFO9: Menu Inactive(8,2) : Return : Rem V FLIP
MFOA: Menu Inactive(8,3) : Return : Rem V/H
MFOB: Menu Inactive(8,4) : Return : Rem LOAD CUS
MFOC: Menu Inactive(8,5) : Return : Rem GRAB
MFOD: Menu Inactive(8,6) : Return : Rem LOAD B
MFOE: Menu Inactive(8,7) : Return : Rem SAVE B
MFOF: Menu Inactive(10,4) : Return : Rem INVERT
'--------------------------------------------------
MFN0: Menu Active(1,1) : Return
MFN1: Menu Active(1,2) : Return
MFN2: Menu Active(2,1) : Return
MFN3: Menu Active(3,1) : Return
MFN4: Menu Active(4,1) : Return
MFN5: Menu Active(5,1) : Return
MFN6: Menu Active(9,1) : Return
MFN7: Menu Active(9,2) : Return
MFN8: Menu Active(8,1) : Return
MFN9: Menu Active(8,2) : Return
MFNA: Menu Active(8,3) : Return
MFNB: Menu Active(8,4) : Return
MFNC: Menu Active(8,5) : Return
MFND: Menu Active(8,6) : Return
MFNE: Menu Active(8,7) : Return
MFNF: Menu Active(10,4) : Return
Procedure CHSMS
If Z=1 Then ZOMIN
If Z=2 Then GRAB
End Proc
Procedure PWIND
Inc C
RSTA: If Z=0 and COM<>13 or GF=1 and MU=0
F=1 : MOVESCR
Else
F=1 : STORSCR : End If
If LCS=0 and COM<11 or MU=1
Window 1 : Paper 3 : Pen 1 : Clw : Title Top "Electro Cad V1.2"
End If
If LCS>0 and COM=1
Window 1 : Paper 3 : Pen 1 : Clw : Title Top "Electro Cad V1.2"
End If
If MU=1 Then Pop Proc
If GF=1 and MU=0
Change Mouse 3 : Z=0 : Erase 1
Load CS$
' GF=0 : BF=0 : Z=-1
If LR>0 : LB=LR : End If
Swap RUB,RBE : GF=0 : I#=LB : If I#<1 : BF=0 : End If
MFO=$A : MENON
MFO=$E : MENOFF
If Mouse Zone=0 : Hide On : HF=0 : End If
Change Mouse MP
End If
If LCS=0
On COM Proc RESIS,CAP,DIODE,TRAN,IC,OPTIC,COIL,SWITCH,CONECT,MIS,PECIL,PECIL,TEXP,RUBER
If COM>0 and COM<11 : COMSHOW : LB=I# : LR=0 : FX=0 : BOCOL
If I#=0 : BF=0 : End If
Bob Off 1 : F=0 : MOVESCR
Else
F=0 : MOVESCR
End If : Else
On COM Proc CUSTOM,EXXIT,PECIL,PECIL,TEXP,RUBER
If COM=1 : COMSHOW : LB=I# : LR=0 : BOCOL
If I#=0 : BF=0 : End If
Bob Off 1 : F=0 : MOVESCR
Else
F=0 : MOVESCR
End If : End If
If ZQ=3
If COM>10 : ZQ=0 : End If
Wait Vbl : Goto RSTA : End If
If C>1 Then C=0
If C=1 and RUB=1 Then RUB=0 : Ink IK
While Mouse Zone=1
If Mouse Key : Pop Proc : End If
Wend
End Proc
Procedure BOCOL
If IK<>LIK
If IK>1 and I#>1 or GF=1 and IK>0
Screen 5 : Cls IK
Paste Bob 0,0,I#
Screen 6 : Paste Bob 410,0,I#
Wait Vbl
Ink IK : Bar 0,0 To 409,180
BASE=Sprite Base(I#)
X=Deek(BASE)*16 : Y=Deek(BASE+2)
Screen Copy 6,410,0,410+X,Y To 6,0,0,96
Screen Copy 6,0,0,X,Y To 5,0,0,96
If GF=0 : Get Bob 5,300,0,0 To X,Y
I#=300 : End If
If GF=1 : Get Bob 5,1,0,0 To X,Y : End If
Cls 0 : Screen 5 : Cls 0 : Screen 0 : Rem Inc SF
End If
If I#=300 and IK<2
I#=LB
End If
End If
End Proc
Procedure COMSHOW
If ZQ=1 Then ZQ=0 Else Bell(50)
BF=1 : Window 1 : Locate 1,1 : Print CT$
I#=C1 : While COM=C2 and Mouse Zone=1
CHECKICON : If N=-1 Then Pop Proc
COM=SI(N)
If Mouse Key=1
I#=I#+2 : If I#>C3 : I#=C1+2 : End If
Bob 1,400,58,I#
If LCS=0 : COMDAT Else CUSDAT : End If
Bell(50) : Wait 10 : End If
If Mouse Key=2
I#=I#-2 : If I#<C1+2 : I#=C3 : End If
Bob 1,400,58,I#
If LCS=0 : COMDAT Else CUSDAT : End If
Bell(50) : Wait 10 : End If
Wend : If I#=C1 and RUB=0 Then I#=LB
End Proc
Procedure CUSTOM
C1=0 : C2=1 : C3=LCS*2
End Proc
Procedure EXXIT
Bell(50) : CS$="ElectroCad:ElecAcs/Symbol_Elec.Abk"
Change Mouse 3
ICON_BAR
Screen 7 : Load Iff "ElectroCad:ElecAcs/Icon_Bar.Iff" : Screen 0
Erase 1 : Load CS$
For N=0 To 69 : SI(N)=Val("$"+Mid$(SI$,N+1,1)) : Next
ICON_BAR
Change Mouse MP : BF=0 : I#=0 : LCS=0
End Proc
Procedure RESIS
CT$="Resistors" : C1=0 : C2=1 : C3=8
End Proc
Procedure CAP
CT$="Capacitors" : C1=8 : C2=2 : C3=18
End Proc
Procedure DIODE
CT$="Diodes and Rectifiers" : C1=18 : C2=3 : C3=36
End Proc
Procedure TRAN
CT$="Transistors" : C1=36 : C2=4 : C3=56
End Proc
Procedure IC
CT$="Intergrated Circuits" : C1=56 : C2=5 : C3=96
End Proc
Procedure OPTIC
CT$="Optical Electronics" : C1=96 : C2=6 : C3=130
End Proc
Procedure COIL
CT$="Inductors & Transfomers" : C1=130 : C2=7 : C3=158
End Proc
Procedure SWITCH
CT$="Switches & Relaies" : C1=158 : C2=8 : C3=190
End Proc
Procedure CONECT
CT$="Connectors" : C1=190 : C2=9 : C3=234
End Proc
Procedure MIS
CT$="Miscellaneous Components" : C1=234 : C2=10 : C3=270
End Proc
Procedure PECIL
Bob Off 1 : Bell(50)
MZON: Change Mouse 1 : Show On : HF=1
If Z=0 Then Swap BF,ZIRO
Repeat : Until Mouse Key=0
While Mouse Zone=1
If CO=1 : CO_ORS : End If
If Mouse Key Then MP=1 : CF=0 : FH=0 : Pop Proc
Wend : Change Mouse 2 : MP=2
'-------------------------------------------------------------------
F=1 : MOVESCR : M=1
ZOIN: Do
If TR=1 and Point(X Screen(X Mouse),Y Screen(Y Mouse))<>0 : Bell(70) : Wait 15 : End If
If Mouse Key<>1 Then OX=X Screen(X Mouse) : OY=Y Screen(Y Mouse)
If Mouse Key=1
If Z<>0 and PF=0
LX=X Hard(OX-388) : LY=OY-131 : XL=X Hard(OX+388) : YL=OY+219
Limit Mouse LX,LY To XL,YL : PF=1 : Ink 1
End If
X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
Do
If M=1
Rem *Re-draw Line If Mouse Has Moved*
If Z=0 : Ink IK : End If
If COM=11 or COM=3 and LCS>0 : Draw OX,OY To X,Y : M=0 : End If
If COM<>11 and SH=0 and LCS=0 or COM<>3 and SH=0 and LCS>0 : Box OX,OY To X,Y : M=0 : End If
If COM<>11 and SH=1 and LCS=0 or COM<>3 and SH=1 and LCS>0 : R1=Abs(OX-X)+1 : Circle OX,OY,R1 : M=0 : End If
If COM<>11 and SH=2 and LCS=0 or COM<>3 and SH=2 and LCS>0 : R1=Abs(OX-X)+1 : R2=Abs(OY-Y)+1 : Ellipse OX,OY,R1,R2 : M=0 : End If
End If
Rem *If Mouse should Move Blankout Old Line*
If X<>X Screen(X Mouse) or Y<>Y Screen(Y Mouse)
Wait Vbl
F=0 : MOVESCR
If CO=1 : CO_ORS : End If
X=X Screen(X Mouse) : Y=Y Screen(Y Mouse) : M=1
End If
Rem *Lay Line For Good When Mouse Key Releast*
If Mouse Key<>1
F=0 : MOVESCR
If COM=11 and M<2 or COM=3 and LCS>0 and M<2 : Draw OX,OY To X,Y : M=0 : End If
If COM<>11 and SH=0 and M<2 and LCS=0 or COM<>3 and SH=0 and M<2 and LCS>0 : Box OX,OY To X,Y : M=0 : End If
If COM<>11 and SH=1 and M<2 and LCS=0 or COM<>3 and SH=1 and M<2 and LCS>0 : R1=Abs(OX-X)+1 : Circle OX,OY,R1 : M=0 : End If
If COM<>11 and SH=2 and M<2 and LCS=0 or COM<>3 and SH=2 and M<2 and LCS>0 : R1=Abs(OX-X)+1 : R2=Abs(OY-Y)+1 : Ellipse OX,OY,R1,R2 : M=0 : End If
If Z=-1
If X>OX : GX=OX : XG=X Else GX=X : XG=OX : End If
If Y>OY : GY=OY : YG=Y Else GY=Y : YG=OY : End If
If XG<640 : Inc XG : End If
If YG<256 : Inc YG : End If
GF=1 : F=0 : MOVESCR : Swap BF,BFH : BF=1
Gosub LIM1
If TW=11 or TW=12 : Swap TW,WT : End If
RUB=0 : Change Mouse 1 : MP=1 : Ink IK : Pop Proc
End If
If M=2 : M=0 : End If
Exit
End If
Loop
End If
F=1 : MOVESCR
OX=X Screen(X Mouse) : OY=Y Screen(Y Mouse)
If Mouse Zone=1 and L=1 Then Goto ZOIN
'-------------------------------------------------------------------
L=0 : If Mouse Zone=1 and O=0 Then Goto MZON
If Key State(89)=True Then J=2 : ICON_BAR
If Mouse Key=2 and O=1 Then Bob Off 1 : MENUCON
If Mouse Key=2 Then J=1 : ICON_BAR : MENUCON
If Mouse Key<>2 and J=1 and O=1 Then ICON_BAR : J=0
If GF=1 Then Pop Proc
If Key State(68)=-1 and GF=0
If CF=0
Change Mouse 1 : MP=1 : End If
If Z=0 : Swap BF,ZIRO : End If
If BF=1 or Z=-1 : Hide On : HF=0 : End If
Z=0 : COM=0 : FH=0 : Pop Proc
End If
If GF=1
Change Mouse 1 : MP=1 : Swap BF,ZIRO : Pop Proc
End If
If Z>0 : CF=1 : End If
CHSMS
While Key State(79)=-1 or Key State(78)=-1 or Key State(76)=-1 or Key State(77)=-1
If Key State(79)=-1 and SCX>0 : F=1 : MOVESCR : Add SCX,-40 : Q=1 : End If
If Key State(78)=-1 and SCX<640 : F=1 : MOVESCR : Add SCX,40 : Q=1 : End If
If Key State(76)=-1 and SCY>0 : F=1 : MOVESCR : Add SCY,-16 : Q=1 : End If
If Key State(77)=-1 and SCY<256 : F=1 : MOVESCR : Add SCY,16 : Q=1 : End If
If Q=1 Then F=0 : MOVESCR : Q=0
Wend : L=0
Loop : If Z=0 Then Swap BF,ZIRO : Rem bf=bob on flag if it =0 then there is no bob at mouse coors
End Proc
Procedure TEXP
F=1 : MOVESCR : MP=2
VAU$="ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789!�$%^&*()-_=+[]'~;:#@,<.>/\|?"+Chr$(34)
Bob Off 1 : Bell(50) : Gr Writing 0 : Ink IK : Z=0 : GF=0
If FH=1 Then FH=0 : Swap LAB$,LAH$ : LAH$="" : Show On : HF=1 : Goto FROM
LABE: Wait Vbl : Window 1 : LW=1
Paper 3 : Pen 1 : Clw : Title Top "Electro Cad V1.2"
Locate 1,1 : Print "Enter Label"
Clear Key
Locate 1,3 : Print "_" : X=1 : Y=3 : LAB$=""
'-------------------------Input Routine-------------------------
Change Mouse 1
Repeat
If GF=1 Then F=0 : MOVESCR : Pop Proc
CR$=Inkey$
If Len(CR$)=1 and Len(LAB$)<80
If Instr(VAU$,CR$)>0 or Instr(Lower$(VAU$),CR$)>0
If X=1 : Locate 29,Y-1 : Print " " : End If
LAB$=LAB$+CR$
Locate X,Y : Print CR$;"_"; : Inc X
If X>28 : X=1 : Inc Y : End If
End If : End If
If X+Y>4
If Key State(65)=-1
Wait 7 : Dec X
If X=0 : Locate 1,Y : Print " " : X=29 : Dec Y : End If
Locate X,Y : Print "_ " : LAB$=Left$(LAB$,Len(LAB$)-1)
End If : End If
If Mouse Key=2 and J<>2 Then J=1 : ICON_BAR : MENUCON
If Mouse Key<>2 and J=1 and O=1 Then ICON_BAR : Paper 3 : Pen 1 : J=0
If Z>0 Then CF=1
If Mouse Zone=1 and Mouse Key
N=Int((X Screen(X Mouse)-9)/8)
If N<1 : N=0 Else ZQ=1 : End If
COM=SI(N) : LAB$="" : MP=1 : CF=0 : FH=0 : Gr Writing 1
Pop Proc : End If
CHSMS
Until CR$=Chr$(13)
'---------------------------------------------------------------
Wait Vbl : F=0 : MOVESCR
If Len(LAB$)=0 or Instr(Chr$(13),CR$)=0
Change Mouse 1 : MP=1 : CF=0 : COM=0 : LW=0 : Pop Proc : End If : Rem bf=0:gf=0
Change Mouse MP : LW=0
Wait 15
If LAB$="AQUATAR" : Direct : End If
FROM: Text X Screen(X Mouse),Y Screen(Y Mouse)+3,LAB$
Repeat
Ink IK
TX=X Screen(X Mouse) : TY=Y Screen(Y Mouse)
If Mouse Zone=1
Change Mouse 1
While Mouse Zone=1
Rem Wait 5
If Mouse Key=1 or Mouse Key=2 : MP=1 : CF=0 : FH=0 : Gr Writing 1 : Pop Proc : End If
Wend
Change Mouse MP
End If
'--------------------------------------------------------------------
If GF=1 Then F=0 : MOVESCR : Pop Proc
If Key State(68)=-1
F=0 : MOVESCR : LAB$="" : Change Mouse 1 : MP=1 : COM=0 : CF=0 : FH=0 : LW=0 : Gr Writing 1 : Pop Proc
End If
If Key State(89)=True Then J=2 : ICON_BAR
If Mouse Key=2 and O=1 Then Swap LAB$,LAH$ : F=0 : MOVESCR : MENUCON
If Mouse Key=2 Then Swap LAB$,LAH$ : J=1 : F=0 : MOVESCR : ICON_BAR : MENUCON
If Mouse Key<>2 and J=1 and O=1
ICON_BAR : J=0
If Z=0 : Swap LAB$,LAH$ : LAH$="" : End If
Text X Screen(X Mouse),Y Screen(Y Mouse)+3,LAB$
End If
If Z>0 Then CF=1
CHSMS
While Key State(79)=-1 or Key State(78)=-1 or Key State(76)=-1 or Key State(77)=-1
If Key State(79)=-1 Then Add SCX,-40 : Q=1 : If SCX<0 Then SCX=0 : Q=0
If Key State(78)=-1 Then Add SCX,40 : Q=1 : If SCX>640 Then SCX=640 : Q=0
If Key State(76)=-1 Then Add SCY,-16 : Q=1 : If SCY<0 Then SCY=0 : Q=0
If Key State(77)=-1 Then Add SCY,16 : Q=1 : If SCY>256 Then SCY=256 : Q=0
If Q=1 Then F=0 : MOVESCR : Text TX,TY,LAB$ : Q=0
Wend : L=0
'--------------------------------------------------------------------
If TX-X Screen(X Mouse)<>0 or TY-Y Screen(Y Mouse)<>0
F=0 : MOVESCR
TX=X Screen(X Mouse) : TY=Y Screen(Y Mouse)
Text TX,TY+3,LAB$
End If
Until Mouse Key=1
If Mouse Zone=0 Then F=1 : MOVESCR
Goto LABE
End Proc
Procedure RUBER
RUB=1 : BF=1 : C=0
Ink 0 : Bell(50)
End Proc
LIM1: Limit Mouse 128,44 To 448,299 : Return
LIM2: Limit Mouse 312,82 To 423,162 : Return
BOOX: Ink 0,, : Box 377,106 To 486,121 : Box 378,106 To 485,121
Box 490,106 To 598,121 : Box 491,106 To 597,121 : Ink IK,,
Return
Procedure WMOU
Ink 3
Bar 399,55 To 412,119
Bar 444,55 To 457,119
Bar 489,55 To 502,119
RGB$=Hex$(Colour(CL)) : RGB$=Right$(RGB$,Len(RGB$)-1)
While Len(RGB$)<3
RGB$="0"+RGB$ : Wend
R=Abs(((Val("$"+Mid$(RGB$,1,1)))-15)*4)+55
G=Abs(((Val("$"+Mid$(RGB$,2,1)))-15)*4)+55
B=Abs(((Val("$"+Mid$(RGB$,3,1)))-15)*4)+55
Ink 2
Bar 399,R To 412,R+4
Bar 444,G To 457,G+4
Bar 489,B To 502,B+4
Ink 1,3 : Text 552,107,"$"+RGB$
While Mouse Key=1 : Wend
End Proc
Procedure DEBOX
Ink 3
Box 515,52 To 551,72
Box 560,52 To 596,72
Box 515,77 To 551,97
Box 560,77 To 596,97
Ink 1
End Proc
Procedure TRASH
Menu Off : Bell(50) : F=1 : MOVESCR
If Choice(2)=1
Swap C,ZIRO : MU=1 : PWIND : Swap C,ZIRO : ZIRO=0
Gosub LIM2
YN$(0)=".............No "
YN$(1)=".............Yes"
Pen 2 : For X=0 To 3
P$(X)="Clear Page"+Str$(X+1)
Locate 1,X+2 : Print P$(X)+YN$(1)
Next
D$="Clear Screen"
WIN(29,2)=1 : WIN(29,3)=1 : WIN(29,4)=1 : WIN(29,5)=1
HILIGHT
If WC=5
If WIN(29,2)=1 : Screen 1 : Cls 0 : End If
If WIN(29,3)=1 : Screen 2 : Cls 0 : End If
If WIN(29,4)=1 : Screen 3 : Cls 0 : End If
If WIN(29,5)=1 : Screen 4 : Cls 0 : End If
Screen 0
If COM=14 : Ink 0 Else Ink IK : End If
End If
Else
Gosub LIM2
YN$(0)=".............No "
YN$(1)=".............Yes"
YN$(2)=".............N/A"
WIN(29,2)=1 : WIN(29,3)=1 : WIN(29,4)=1 : WIN(29,5)=1
Clear Key
F$=Fsel$("*.Elec","","Erase a Schematic")
If F$="" : F$="Quit" : End If
F=Instr(F$,".Elec")
If F<1 or Len(F$)-F>4 or Exist(F$)=0
Gosub LIM1
F=0 : MOVESCR : Ink IK,,
Screen 0
Pop Proc
End If
Open In 1,F$
For X=2 To 5
Input #1,WIN(29,X)
If WIN(29,X)=0 : WIN(29,X)=2 : End If
Next : Close 1 : Screen 0
ALL=WIN(29,2)+WIN(29,3)+WIN(29,4)+WIN(29,5)
Gosub LIM2
Swap C,ZIRO : MU=1 : PWIND : Swap C,ZIRO : ZIRO=0
Pen 2 : For X=0 To 3
P$(X)="Erase Page"+Str$(X+1)
If WIN(29,X+2)=1
Locate 1,X+2 : Print P$(X)+YN$(1)
Else
Locate 1,X+2 : Print P$(X)+YN$(2)
End If
Next : D$="Erase Schem."
HILIGHT
If WC=5
F$=Left$(F$,Len(F$)-5)
If WIN(29,2)=1 and Exist(F$+"_1.Iff")=-1 : Kill F$+"_1.Iff" : End If
If WIN(29,3)=1 and Exist(F$+"_2.Iff")=-1 : Kill F$+"_2.Iff" : End If
If WIN(29,4)=1 and Exist(F$+"_3.Iff")=-1 : Kill F$+"_3.Iff" : End If
If WIN(29,5)=1 and Exist(F$+"_4.Iff")=-1 : Kill F$+"_4.Iff" : End If
If WIN(29,2)+WIN(29,3)+WIN(29,4)+WIN(29,5)=ALL
Kill F$+".Elec"
Else
Open Out 1,F$+".Elec"
For X=2 To 5
If WIN(29,X)=2 : WIN(29,X)=1 : End If
Print #1, Not WIN(29,X)-2
Next : Close 1
End If
End If
End If
Gosub LIM1
F=0 : MOVESCR
Screen 0
If COM=14 : Ink 0 Else Ink IK : End If
End Proc
Procedure LOD
Menu Off : Bell(50) : F=1 : MOVESCR
Gosub LIM2
YN$(0)="..............No "
YN$(1)="..............Yes"
YN$(2)="..............N/A"
WIN(29,2)=1 : WIN(29,3)=1 : WIN(29,4)=1 : WIN(29,5)=1
Clear Key
F$=Fsel$("*.Elec","","Load a Schematic")
If F$="" : F$="Quit" : End If
F=Instr(F$,".Elec")
If F<1 or Len(F$)-F>4 or Exist(F$)=0
Gosub LIM1
F=0 : MOVESCR : Ink IK,,
Screen 0
Pop Proc
End If
Open In 1,F$
For X=2 To 5
Input #1,WIN(29,X)
If WIN(29,X)=0 Then WIN(29,X)=2
Next : Close 1 : Screen 0
Gosub LIM2
Swap C,ZIRO : MU=1 : PWIND : Swap C,ZIRO : ZIRO=0
Pen 2 : For X=0 To 3
P$(X)="Load Page"+Str$(X+1)
If WIN(29,X+2)=1
Locate 1,X+2 : Print P$(X)+YN$(1)
Else
Locate 1,X+2 : Print P$(X)+YN$(2)
End If
Next : D$="Load Screen"
HILIGHT
For X=2 To 5
If WIN(29,X)=2 : WIN(29,X)=0 : End If
Next
If WIN(29,2)+WIN(29,3)+WIN(29,4)+WIN(29,5)=0 : WC=6 : End If
If WC=5
F$=Left$(F$,Len(F$)-5)
If WIN(29,2)=1 and Exist(F$+"_1.Iff")=-1 : Screen 1 : Load Iff F$+"_1.Iff" : End If
If WIN(29,3)=1 and Exist(F$+"_2.Iff")=-1 : Screen 2 : Load Iff F$+"_2.Iff" : End If
If WIN(29,4)=1 and Exist(F$+"_3.Iff")=-1 : Screen 3 : Load Iff F$+"_3.Iff" : End If
If WIN(29,5)=1 and Exist(F$+"_4.Iff")=-1 : Screen 4 : Load Iff F$+"_4.Iff" : End If
Screen 0
X=2 : Repeat
PAL=WIN(29,X) : Inc X
Until PAL=1
Get Palette X-2
BG=Colour(0) : Screen 7 : Colour 0,BG : Screen 0
End If
Gosub LIM1
F=0 : MOVESCR
If COM=14 : Ink 0 Else Ink IK : End If
End Proc
Procedure SAV
DEMO
End Proc
Procedure PRIN
DEMO
End Proc
Procedure MOVE
If MU=1 Then Pop Proc
Bell(50) : Menu Off : F=1 : MOVESCR
Swap C,ZIRO : MU=1 : PWIND : Swap C,ZIRO : ZIRO=0
Locate ,2 : Centre "Use Cursor Keys to"
Locate ,3 : Centre "Position Your Schematic"
Locate ,5 : Centre "Press Left Mouse Button"
Locate ,6 : Centre "to Comence"
Locate ,8 : Centre "Pess Enter When Done"
Repeat : Until Mouse Key=1
F=0 : MOVESCR
Repeat
While Key State(76)=-1 : Rem scrol up
Screen Copy 1,0,0,640,8 To 5,0,0
Screen Copy 2,0,0,640,8 To 5,0,8
Screen Copy 3,0,0,640,8 To 5,0,16
Screen Copy 4,0,0,640,8 To 5,0,24
Screen Copy 1,0,8,640,256 To 1,0,0 : Screen Copy 5,0,16,640,24 To 1,0,248
Screen Copy 2,0,8,640,256 To 2,0,0 : Screen Copy 5,0,24,640,32 To 2,0,248
Screen Copy 3,0,8,640,256 To 3,0,0 : Screen Copy 5,0,0,640,8 To 3,0,248
Screen Copy 4,0,8,640,256 To 4,0,0 : Screen Copy 5,0,8,640,16 To 4,0,248
F=0 : MOVESCR
Wend
While Key State(77)=-1 : Rem scrol down
Screen Copy 1,0,248,640,256 To 5,0,0
Screen Copy 2,0,248,640,256 To 5,0,8
Screen Copy 3,0,248,640,256 To 5,0,16
Screen Copy 4,0,248,640,256 To 5,0,24
Screen Copy 1,0,0,640,248 To 1,0,8 : Screen Copy 5,0,16,640,24 To 1,0,0
Screen Copy 2,0,0,640,248 To 2,0,8 : Screen Copy 5,0,24,640,32 To 2,0,0
Screen Copy 3,0,0,640,248 To 3,0,8 : Screen Copy 5,0,0,640,8 To 3,0,0
Screen Copy 4,0,0,640,248 To 4,0,8 : Screen Copy 5,0,8,640,16 To 4,0,0
F=0 : MOVESCR
Wend
While Key State(79)=-1 : Rem scrol left
Screen Copy 1,0,0,16,256 To 5,0,0
Screen Copy 2,0,0,16,256 To 5,16,0
Screen Copy 3,0,0,16,256 To 5,32,0
Screen Copy 4,0,0,16,256 To 5,48,0
Screen Copy 1,16,0,640,256 To 1,0,0 : Screen Copy 5,16,0,32,256 To 1,624,0
Screen Copy 2,16,0,640,256 To 2,0,0 : Screen Copy 5,0,0,16,256 To 2,624,0
Screen Copy 3,16,0,640,256 To 3,0,0 : Screen Copy 5,48,0,64,256 To 3,624,0
Screen Copy 4,16,0,640,256 To 4,0,0 : Screen Copy 5,32,0,48,256 To 4,624,0
F=0 : MOVESCR
Wend
While Key State(78)=-1 : Rem scrol right
Screen Copy 1,624,0,640,256 To 5,0,0
Screen Copy 2,624,0,640,256 To 5,16,0
Screen Copy 3,624,0,640,256 To 5,32,0
Screen Copy 4,624,0,640,256 To 5,48,0
Screen Copy 1,0,0,624,256 To 1,16,0 : Screen Copy 5,16,0,32,256 To 1,0,0
Screen Copy 2,0,0,624,256 To 2,16,0 : Screen Copy 5,0,0,16,256 To 2,0,0
Screen Copy 3,0,0,624,256 To 3,16,0 : Screen Copy 5,48,0,64,256 To 3,0,0
Screen Copy 4,0,0,624,256 To 4,16,0 : Screen Copy 5,32,0,48,256 To 4,0,0
F=0 : MOVESCR
Wend
Until Key State(68)=-1
Screen 5 : Cls 0 : Screen 0
Ink IK : Wait 15
End Proc
Procedure CHANGE
Bell(50)
For X=1 To 5
If Choice(2)=X : LIK=IK : IK=X-1 : BOCOL
'If GF=0 : SF=0 : End If : BOCOL
End If
Next
End Proc
Procedure SHAPE
Bell(50)
For X=1 To 3
If Choice(2)=X Then SH=X-1
Next
End Proc
Procedure SYMBOL
Menu Off
CH=Choice(2) : If CH=3 or CH=4 or CH=5 Then GF=0
On Choice(2) Proc HFLIP,VFLIP
If Choice(2)=3
'---------------Check is I# a Even Number-------------
If LR=0 : I#=LB Else I#=LR : LB=LR : LR=0 : End If
If Instr(Str$(I#/2),".")
I#=I#-1 Else I#=I#+1
End If : LB=I# : BOCOL : FX=0 : End If
'Load custom here(optin 4)
If Choice(2)=4
Clear Key
CS$=Fsel$("*.Cus","","Load a Custom Libaray")
Screen 0
If CS$="" : Pop Proc : End If
F=Instr(CS$,".")
If F>0 : CS$=Left$(CS$,F-1) : End If
If Exist(CS$+".Cus")=0 or Exist(CS$+".Abk")=0 : Screen 0 : Pop Proc : End If
Erase 1
Open In 1,CS$+".Cus"
Input #1,LCS
If LCS<1 : Close 1 : Load CS$ : Pop Proc : End If
For X=0 To LCS-1
Input #1,CUS$(X)
Next
Input #1,CT$
Close 1 : If RUB=0 : BF=0 : End If
I#=0 : Z=0 : BF=0 : FX=0
Load CS$+".Abk",1
Screen 7 : Load Iff "ElectroCad:ElecAcs/CustomBar.Iff" : Screen 0
For X=0 To 69 : SI(X)=Val("$"+Mid$(SC$,X+1,1)) : Next
CS$=CS$+".Abk"
If COM>0 and COM<11 : COM=1 : End If
If COM>10 : Add COM,-8 : End If
End If
'-----------------------------------------------------
If Choice(2)=5 : Z=2 : End If
If Choice(2)=6
DEMO
End If
If Choice(2)=7 and Z=-1
DEMO
End If
End Proc
Procedure ZOM
Menu Off : Bell(50)
If Choice(2)=1 : Z=1 : O=0 : End If
If Choice(2)=2 : RST=1 : End If
End Proc
Procedure PREFS
Bell(50)
If Choice(2)=1
If CO=1 : CO=0 : Else CO=1 : End If
End If
If Choice(2)=2
If TR=1 : TR=0 : Else TR=1 : End If
End If
If Choice(2)=3
Menu Off : M=2 : Gr Writing 1
For N=0 To 3 : CLR(N)=Colour(N) : Next
Swap C,ZIRO : MU=1 : PWIND : Swap C,ZIRO : ZIRO=0
Ink 2,3, : Text 401,50,"R" : Text 446,50,"G" : Text 492,50,"B"
Gosub LIM2 : Ink 1,,
Box 398,54 To 413,120 : Set Zone 2,398,54 To 413,120
Box 443,54 To 458,120 : Set Zone 3,443,54 To 458,120
Box 488,54 To 503,120 : Set Zone 4,488,54 To 503,120
Ink 0 : Bar 518,54 To 548,70 : Set Zone 5,518,54 To 548,70
Ink 1 : Bar 563,54 To 593,70 : Set Zone 6,563,54 To 593,70
Ink 2 : Bar 518,79 To 548,95 : Set Zone 7,518,79 To 548,95
Ink 0 : Box 563,79 To 593,95 : Set Zone 8,563,79 To 593,95
Ink 1 : Text 518,107,"RGB:" : OK$="OK." : RS$="Reset"
Set Zone 9,518,113 To 554,118 : Set Zone 10,574,113 To 590,118
'----------------------------------------------------------------
Repeat
MZ=Mouse Zone
If MU=1 or Mouse Key=1 and MZ=5 : DEBOX : Box 515,52 To 551,72 : CL=0 : WMOU : End If
If Mouse Key=1 and MZ=6 : DEBOX : Box 560,52 To 596,72 : CL=1 : WMOU : End If
If Mouse Key=1 and MZ=7 : DEBOX : Box 515,77 To 551,97 : CL=2 : WMOU : End If
If Mouse Key=1 and MZ=8 : DEBOX : Box 560,77 To 596,97 : CL=3 : WMOU : End If
If MZ>1 and MZ<5
For X=0 To 2 : RGB(X)=Val("$"+Mid$(RGB$,X+1,1)) : Next
Y1=RGB(MZ-2) : BPY=Abs((RGB(MZ-2)-15)*4)+55
While Mouse Key=1 and Mouse Zone=MZ
BPX=354+((MZ-1)*45)
If Y1<>RGB(MZ-2)
Ink 3 : Bar BPX,55 To BPX+13,119
RGB(MZ-2)=Y1 : BPY=Abs((Y1-15)*4)+55
Ink 2 : Bar BPX,BPY To BPX+13,BPY+4
CLR(CL)=(RGB(0)*256)+(RGB(1)*16)+RGB(2) : Colour CL,CLR(CL)
RGB$=Hex$(CLR(CL)) : RGB$=Right$(RGB$,Len(RGB$)-1)
While Len(RGB$)<3
RGB$="0"+RGB$ : Wend
Ink 1,3 : Text 552,107,"$"+RGB$
End If
Y1=Abs(((Y Screen(Y Mouse)-55)/4)-15)
Wend
End If
If MZ=9
Ink 3,1 : Text 518,120,RS$ : FG=1
If Mouse Key=1
CLR(CL)=BCL(CL) : Colour CL,CLR(CL) : WMOU
End If
End If
If MZ<>9 and FG=1 or MU=1
Ink 1,3 : Text 518,120,RS$ : FG=0
End If
If MZ=10
Ink 3,1 : Text 574,120,OK$ : FG=2
End If
If MZ<>10 and FG=2 or MU=1
Ink 1,3 : Text 574,120,OK$ : FG=0 : MU=0
End If
Until Mouse Key=1 and Mouse Zone=10
Reset Zone
Gosub LIM1
'-----------------------------------------------
F=0 : If Z=1 : STORSCR
Else MOVESCR : End If
'-----------------------------------------------
BG=Colour(0) : Screen 7 : Colour 0,BG
For N=6 To 0 Step -1
Screen N : Get Palette 0
Next
While Mouse Key=1 : Wend
If COM=13 : Gr Writing 0 : End If
If COM=14 : Ink 0 Else Ink IK : End If
End If
If Choice(2)=4 and Z=0
DEMO
End If
If Choice(2)=5
Menu Off : Bell(50) : F=1 : MOVESCR
Swap C,ZIRO : MU=1 : PWIND : Swap C,ZIRO : ZIRO=0
Gosub LIM2
Locate ,1 : Centre "Exit to Work Bench"
Locate ,3 : Centre "Current Schematic Will"
Locate ,5 : Centre "be LOST if it has"
Locate ,7 : Centre "Not Been Saved!!"
D$=" Work Bench "
WIN(29,2)=3 : WIN(29,3)=3 : WIN(29,4)=3 : WIN(29,5)=3
HILIGHT
If WC=5 : Stop : End If
F=0 : MOVESCR
If COM=14 : Ink 0 Else Ink IK : End If
End If
End Proc
Procedure HILIGHT
Pen 1 : Locate 2,9 : Print D$ : Locate 16,9 : Print C$
Gosub BOOX : WC=0
'------------------------------------------------
Repeat
If WIN(0,Y)>0 and WIN(0,Y)<5 and WIN(29,Y)<3 : YY=Y
Paper 1 : Pen 2 : Locate 1,YY : Print P$(YY-2)+YN$(WIN(29,Y))
If Mouse Key=1 and WIN(29,Y)<2
E=WIN(29,Y) : E= Not E-2 : Locate 1,YY : Print P$(YY-2)+YN$(E)
WIN(29,Y)=E : While Mouse Key=1 : Wend
End If
End If
Y=Y Text(Y Screen(Y Mouse))
If YY-Y<>0 and WIN(0,YY)>0 and WIN(0,YY)<5
Paper 3 : Pen 2 : Locate 1,YY : Print P$(YY-2)+YN$(WIN(29,YY))
End If
If WIN(X,Y)=5 : YY=Y
Paper 1 : Pen 3 : Locate 2,9 : Print D$
End If
X=X Text(X Screen(X Mouse))
If X>14 or YY<>Y and WIN(X,Y)<>5
Paper 3 : Pen 1 : Locate 2,9 : Print D$
End If
If WIN(X,Y)=6 : YY=Y
Paper 1 : Pen 3 : Locate 16,9 : Print C$
End If
X=X Text(X Screen(X Mouse))
If X<15 or YY<>Y and WIN(X,Y)<>6
Paper 3 : Pen 1 : Locate 16,9 : Print C$
End If
If Mouse Key=1 and Y=9
WC=WIN(X,Y) : While Mouse Key=1 : Wend
End If
Until WC=5 or WC=6
End Proc
Procedure ZOMIN
If LW=1 Then F=0 Else F=1
MOVESCR
For MFO=0 To $F
If MFO=7 Then MENON Else MENOFF
Next
F=1 : MOVESCR : OE=1
Bob Off 1 : Hide On : HF=0 : Ink 1 : MU=1 : Swap RUB,OE
'---------------------------------------------------------
Repeat
XX=X : YY=Y : X=X Screen(X Mouse) : Y=Y Screen(Y Mouse)
Box X,Y To X+88,Y+42
If XX<>X or YY<>Y
Wait Vbl
F=0 : MOVESCR
End If
If Key State(68)=-1
F=0 : MOVESCR : Z=0 : O=1 : Swap RUB,OE : MU=0
If RUB=1 : Ink 0 : End If
If BF=0 : Show On : HF=1 : End If
For MFO=0 To $F
If MFO=7 or MFO=$E : MENOFF Else MENON : End If
Next
Pop Proc
End If
While Key State(79)=-1 or Key State(78)=-1 or Key State(76)=-1 or Key State(77)=-1
If Key State(79)=-1 Then Add SCX,-40 : Q=1 : If SCX<0 Then SCX=0 : Q=0
If Key State(78)=-1 Then Add SCX,40 : Q=1 : If SCX>640 Then SCX=640 : Q=0
If Key State(76)=-1 Then Add SCY,-16 : Q=1 : If SCY<0 Then SCY=0 : Q=0
If Key State(77)=-1 Then Add SCY,16 : Q=1 : If SCY>256 Then SCY=256 : Q=0
If Q=1 Then F=0 : MOVESCR : Text TX,TY,LAB$ : Q=0
Wend : L=0
Until Mouse Key=1
'---------------------------------------------------------
Change Mouse 3 : Show On : HF=1
F=0 : MOVESCR
F=1 : STORSCR : Cls 0
Screen Copy 5,X,Y,X+88,Y+42 To 0,10,107
View : Zoom 0,10,107,98,149 To 0,112,2,640,254
Limit Mouse 187,46 To 447,292 : RX=X : RY=Y
Change Mouse 2 : MP=2
Repeat
XX=X : YY=Y : XP=PX : YP=PY
X=Int((X Screen(X Mouse)/6)*6)-2
Y=Int((Y Screen(Y Mouse)/6)*6)+2
PX=(X/6)-8 : PY=(Y/6)+107
If XX<>X or YY<>Y or LY=1 or MU=1
If LY=0 and MU=0
Ink R : Bar XX,YY To XX+5,YY+5 : Plot XP,YP
Else
LY=0 : End If
R=Point(X,Y)
If IK=R : CC= Not IK-2
Else CC=IK : End If
Ink CC : Bar X,Y To X+5,Y+5 : Plot PX,PY
End If
If Mouse Key=1
LY=1 : Ink IK : Bar X,Y To X+5,Y+5 : Plot PX,PY
End If
If MU=1 : MU=0 : End If
If Mouse Key=2
Ink R : Bar X,Y To X+5,Y+5 : Plot PX,PY : MENUCON
Limit Mouse 187,46 To 447,292
Ink IK : Bar X,Y To X+5,Y+5 : Plot PX,PY : End If
Until RST=1 or Key State(68)=-1
Ink R : Bar X,Y To X+5,Y+5 : Plot PX,PY
Screen Copy 0,10,107,98,149 To 5,RX,RY : Cls 0
F=0 : MOVESCR
Screen Copy 5,RX,RY,RX+88,RY+42 To 0,RX,RY
'-------------------------Restore--------------------
F=1 : MOVESCR
Screen 5 : Cls 0 : Screen 0
MU=0 : Swap RUB,OE : Z=0 : RST=0 : O=1 : Ink IK
Gosub LIM1
If Len(LAB$)>0 : Goto S : End If
If BF<>0 or CF=0 : Hide On : HF=0 : End If
If CF=0 : Change Mouse 1 : MP=1 : End If
S: CF=0
If RUB=1 : Ink 0 : End If
For MFO=0 To $F
If MFO=7 or MFO=$E Then MENOFF Else MENON
Next
End Proc
Procedure GRAB
If LW=1 Then F=0 Else F=1
MOVESCR
MFO=$E : MENON
MFO=$A : MENOFF
TW=12
Z=-1 : Swap SH,ZIO : Swap J,ZIR
Swap COM,TW
If Len(LAB$)>0 Then Swap LAB$,LAH$
PECIL
If XG>640 : XG=640 : End If
If YG>256 : YG=256 : End If
If GF=0 and TW=13 : Swap LAB$,LAH$ : LAH$="" : End If
If GF=1 : Erase 1 : Get Bob 1,GX,GY To XG,YG : Hide On : HF=0
I#=1 : End If
Swap SH,ZIO : Swap J,ZIR : Swap COM,TW : Swap RUB,RBE
' RUB=0
If RUB=1 Then Hide On : HF=0
If IK>1 Then BOCOL
End Proc
Procedure HFLIP
If Z=-1 : Change Mouse 3 : Show On : HF=1 : End If
Screen 5 : Paste Bob 0,0,Hrev(I#)
BASE=Sprite Base(I#)
SXG=Deek(BASE)*16 : SYG=Deek(BASE+2) : POS=SXG
'-----------------------Start Scan------------------------
Inc SXG : Inc SYG : Inc FX
If FX=2 Then FX=0
If LR=0 Then LR=LB
If GF=0 Then I#=300 : LB=I# : Rem last bob+1
Get Bob 5,I#,0,0 To SXG,SYG : Hot Spot I#,FX,0
Cls 0 : Screen 0 : Rem FF=0
If Z=-1 : Hide On : HF=0 : Change Mouse MP : End If
End Proc
Procedure VFLIP
If Z=-1 : Change Mouse 3 : Show On : HF=1 : End If
Screen 5 : Paste Bob 0,0,Vrev(I#)
BASE=Sprite Base(I#)
SXG=Deek(BASE)*16 : SYG=Deek(BASE+2) : POS=SYG
'-----------------------Start Scan-----------------------
Inc SXG : Inc SYG
If LR=0 Then LR=LB
If GF=0 Then I#=300 : LB=I# : Rem last bob+1
Get Bob 5,I#,0,0 To SXG,SYG : Hot Spot I#,FX,0
Cls 0 : Screen 0 : RemFF=0
If Z=-1 : Hide On : HF=0 : Change Mouse MP : End If
End Proc
Procedure DISKFULL
Gosub LIM2
Swap C,ZIRO : MU=1 : PWIND : Swap C,ZIRO : ZIRO=0 : Ink 1
Locate ,1 : Centre "Disk Operation Abandoned"
Locate ,3 : Centre "Disk in drive "+Left$(F$,4)
Locate ,4 : Centre "has insufficient space"
Locate ,5 : Centre "to save current file."
Locate ,7 : Centre "Press left mouse button"
Locate ,8 : Centre "to continue."
Wait 25 : Repeat : Until Mouse Key=1 : Ink IK
F=0 : MOVESCR : Gosub LIM1
Dir$="ElectroCad:"
End Proc
Procedure CUSDAT
Locate 1,9 : Print Space$(28)
Locate 1,9 : Print CUS$((I#/2)-1)
End Proc
Procedure COMDAT
Restore INDEX
For V=1 To 122 : Rem Number of name data statments
Read IM,IND : If I#<IM Then Exit
Next
Restore NAME
For V=1 To IND
Read NAME$ : Next
Locate 1,9 : Print Space$(28)
Locate 1,9 : Print NAME$
End Proc
Procedure DEMO
Menu Off : Bell(50) : F=1 : MOVESCR
Swap C,ZIRO : MU=1 : PWIND : Swap C,ZIRO : ZIRO=0
Gosub LIM2
For X=2 To 5 : WIN(29,X)=3 : Next
D$=" Cancel "
Locate ,1 : Centre "Sorry This Function Has"
Locate ,2 : Centre "Not Been Included In"
Locate ,3 : Centre "This Demo Version of"
Locate ,4 : Centre "Electro Cad."
Locate ,6 : Centre "See 'Read Me' Doc."
Locate ,7 : Centre "For More Details."
HILIGHT
Gosub LIM1
F=0 : MOVESCR
End Proc
'--------------------------------------------------------------------
INDEX:
Data 4,1,6,2,8,3,10,4,12,5,14,6,16,7,18,8,20,9,22,10,24,11,26,12,28,13,30,14
Data 32,15,34,16,36,17,38,18,40,19,42,20,44,21,46,22,48,23,50,24,52,25,54,26
Data 56,27,58,28,60,29,62,30,64,31,66,32,68,33,70,34,72,35,74,36,76,37,78,38
Data 80,39,82,40,84,41,86,42,88,43,90,44,92,45,94,46,96,47,98,48,100,49,102,50
Data 104,51,114,52,118,53,120,54,122,55,124,56,126,57,128,58,132,59,138,60,140,61
Data 146,62,148,63,150,64,156,65,158,66,160,67,162,68,164,69,166,70,168,71,170,72
Data 172,73,174,74,176,75,178,76,180,77,182,78,184,79,188,80,190,81,192,82
Data 194,83,196,84,198,85,200,86,202,87,204,88,206,89,208,90,210,91,212,92,214,93
Data 216,94,218,95,220,96,222,97,224,98,226,99,228,100,230,101,232,102,234,103
Data 236,104,238,105,240,106,242,107,244,108,246,109,248,110,250,111,252,112
Data 254,113,256,114,258,115,260,116,262,117,264,118,266,119,268,120,270,121,272,122
NAME:
Data "Resistor","Preset Resistor","Variable Resistor","Thermister","Non Polerised Capacitor"
Data "Electrolitic Capacitor","Preset Capacitor","Variable Capacitor","Fead Throw Capacitor"
Data "Diode","Zener Diode","Tunnel Diode","Varicap Diode","Thyristor","Diac","Triac"
Data "Bridge Rectifer","Supresed Bridge Rectifer","NPN Transistor","PNP Transistor"
Data "N Channel FET","P Channel FET","P Channel Insulated FET","N Channel Insulated FET"
Data "Twin Gated P Channel Ins.FET","Twin Gated N Channel Ins.FET","N Type Base Unijunction"
Data "P Type Base Unijunction","Operational Amplifier","Power Amplifier"
Data "3 Pin Voltage Regulator","NOT Gate (Inverter)","AND Gate (2 Inputs)"
Data "AND Gate (4 Inputs)","NAND Gate (2 Inputs)","NAND Gate (4 Inputs)"
Data "NAND Gate (8 Inputs)","NAND Gate (13 Inputs)","OR Gate (2 Inputs)","OR Gate (4 Inputs)"
Data "OR Gate (8 Inputs)","NOR Gate (2 Inputs)","NOR Gate (4 Inputs)","NOR Gate (8 Inputs)"
Data "Exclusive OR Gate","Exclusive NOR Gate","J-K/R-S Flip Flop","Inverting I/O"
Data "Light Direction Indicator","Light Dependant Resistor","Light Emiting Diode "
Data "LED/LCD Display","LED/LCD Dot Matrix Display","Lamp","Neon Lamp","Strobe/Beacon Lamp"
Data "Photo Diode","Photo Diac","Photo Transister","Air Wound Coil","Centre Tapped Air Wound Coil"
Data "Coil Wound on a Former","Centre Tapped Cuppeld Coil","Inductance Adjuster"
Data "Adjustable Inductor Coil","Audio Transformer","Mains Transformer"
Data "Push to Make Switch","Push to Brake Switch","Single Pole Single Throw"
Data "Single Pole Double Throw","Double Pole Double Throw","Single Pole Tripple Throw"
Data "Double Pole Tripple Throw","10 Way Rottery Switch","12 Way Rottery Switch"
Data "Double Pole 5 Way Rottery","Double Pole 6 Way Rottery","Dil Switch","Relay Contacts"
Data "Relay Coil","D.P.D.T Relay","Solder Joint","Not Connected Bridge","BNC / Phono Socket"
Data "BNC / Phono Plug","Mono Jack Socket","Mono Jack Plug","Stereo Jack Socket"
Data "Stereo Jack Plug","5 Pin Din Socket","5 Pin Din Plug","6 Pin Din Socket"
Data "6 Pin Din Plug","5 Way Edge Connector","10 Way O/I Port","9 Pin Female D Connector"
Data "9 Pin Male D Connector","15 Pin Female D Connector","15 Pin Male D Connector"
Data "23 Pin Female D Connector","23 Pin Male D Connector","25 Pin Female D Connector"
Data "25 Pin Male D Connector","Positive Terminal","Negative Terminal","Chassis"
Data "Earth","Single Battery Cell","Battery","Fuse","Aerial","Coax Cable","Crystal"
Data "Loud Speaker","Microphone","Ear Piece","Ultrasonic Transducer","Read / Write Tape Head"
Data "Erase Tape Head","Moving Coil Meter","Electric Motor"